package org.marketing.common.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.http.client.ClientProtocolException;

public class TEST {
	public static String postFile(String url, String filePath,

			String title, String introduction) {

		File file = new File(filePath);

		if (!file.exists())

			return null;

		String result = null;

		try {

			URL url1 = new URL(url);

			HttpURLConnection conn = (HttpURLConnection) url1.openConnection();

			conn.setConnectTimeout(5000);

			conn.setReadTimeout(30000);

			conn.setDoOutput(true);

			conn.setDoInput(true);

			conn.setUseCaches(false);

			conn.setRequestMethod("POST");

			conn.setRequestProperty("Connection", "Keep-Alive");

			conn.setRequestProperty("Cache-Control", "no-cache");

			String boundary = "-----------------------------" + System.currentTimeMillis();

			conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);

			OutputStream output = conn.getOutputStream();

			output.write(("--" + boundary + "\r\n").getBytes());

			output.write(
					String.format("Content-Disposition: form-data; name=\"media\"; filename=\"%s\"\r\n", file.getName())
							.getBytes());

			output.write("Content-Type: video/mp4 \r\n\r\n".getBytes());

			byte[] data = new byte[1024];

			int len = 0;

			FileInputStream input = new FileInputStream(file);

			while ((len = input.read(data)) > -1) {

				output.write(data, 0, len);

			}

			output.write(("--" + boundary + "\r\n").getBytes());

			output.write("Content-Disposition: form-data; name=\"description\";\r\n\r\n".getBytes());

			output.write(String.format("{\"title\":\"%s\", \"introduction\":\"%s\"}", title, introduction).getBytes());

			output.write(("\r\n--" + boundary + "--\r\n\r\n").getBytes());

			output.flush();

			output.close();

			input.close();

			InputStream resp = conn.getInputStream();

			StringBuffer sb = new StringBuffer();

			while ((len = resp.read(data)) > -1)

				sb.append(new String(data, 0, len, "utf-8"));

			resp.close();

			result = sb.toString();

			System.out.println(result);

		} catch (ClientProtocolException e) {

			System.out.println("postFile，不支持http协议"+e);

		} catch (IOException e) {

			System.out.println("postFile数据传输失败"+e);

		}

		System.out.println("{}: result={}"+ url+ result);

		return result;

	}

	public static void main(String[] args) {

		String url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token="

				+ "6_1XmcY_s8vK6555Rr57vx9COiP9P04QLuJuQBTBYGr5Ba1-CS4pHDNZoLpVxEFupOapdcoJ1QlAwvTPfxfXxeFeSJY3joDfi_DT6GwdUKntPDPsGYB7loxFr-B-X4MbhjtIgzEbJ72Xm0LL59ZKTfAJAJUD&type=video";

		postFile(url, "C:/Users/Administrator/Desktop/18款领航员.mp4", "18款领航员", "18款领航员");

	}

}
